package com.aust.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * - **注解**：你在代码中写的 `@MyAnno` 是标签；
 * - **.class 元数据**：编译器会把注解信息写入 `.class` 文件的结构中（不会生成 Java 字段）；
 * - **接口**：`@interface MyAnno` 在本质上是一个接口，声明了一组属性（方法）；
 * - **动态代理对象**：JVM 运行时创建一个实现了该接口的代理对象，负责读取注解值；
 * - **反射调用**：你用 `clazz.getAnnotation(MyAnno.class)` 获取的就是代理对象；
 * - **调用方法**：你调用 `anno.name()` 时，其实是调用代理对象的 `invoke()` 方法 → 返回 `.class` 文件中存储的值。
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
    String name() default "";
}
